package com.glidebitmappool.internal;

import ohos.media.image.PixelMap;
import ohos.media.image.common.PixelFormat;

/**
 * 位图池功能
 *
 * @author renpengfei
 * @since 2021-03-12
 */
public interface BitmapPool {
    /**
     * 获取bitmap最大容量
     *
     * @return 容量
     */
    int getMaxSize();

    /**
     * 动态调整位图池容量大小
     *
     * @param sizeMultiplier
     */
    void setSizeMultiplier(float sizeMultiplier);

    /**
     * 添加指定的图片到位图池
     *
     * @param bitmap
     */
    void put(PixelMap bitmap);

    /**
     * 返回一个匹配给定宽 高 配置的像素图
     *
     * @param width
     * @param height
     * @param config
     * @return 位图
     */
    PixelMap get(int width, int height, PixelFormat config);

    /**
     * 与get方法一样，只是返回的任何非空位图对象都可能包含未擦除的像素数据或随机数据
     *
     * @param width
     * @param height
     * @param config
     * @return 位图
     */
    PixelMap getDirty(int width, int height, PixelFormat config);

    /**
     * 移除位图池中所有位图
     */
    void clearMemory();

    /**
     * 根据给定的level移除部分位图
     *
     * @param level
     */
    void trimMemory(int level);
}

